{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "Data Analysis Tools : NumPy and Pandas.ipynb",
      "provenance": [],
      "authorship_tag": "ABX9TyPSoXVA/bpIKLB5LLJe+Cv8",
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/Divyanshu-ISM/Petroleum-DS-ML-with-Python/blob/main/Data_Analysis_Tools_NumPy_and_Pandas.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Ced_XJ7Wx8Le"
      },
      "source": [
        "## 1. NumPy\n",
        "\n",
        "\n",
        "NumPy (or Numpy) is a Linear Algebra Library for Python, the reason it is so important for Data Science with Python is that almost all of the libraries in the PyData Ecosystem rely on NumPy as one of their main building blocks.\n",
        "\n",
        "Numpy is also incredibly fast, as it has bindings to C libraries."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "49dh9gX4Mgtt"
      },
      "source": [
        "#Anaconda prompt\n",
        "#pip install numpy"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "oHVSMaDzwnfK"
      },
      "source": [
        "import numpy as np"
      ],
      "execution_count": 84,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Rdk9B10IyITF"
      },
      "source": [
        "Most important aspects of Numpy: vectors,arrays,matrices, and number generation."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "VEBo_SD_yMdl"
      },
      "source": [
        "Disadvantage of using a list."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "6ZPPlMgVyDw_"
      },
      "source": [
        "phi = [0.4 , 0.2, 0.35, 0.27, 0.44]\n",
        "\n",
        "# phi**2\n",
        "for i in range(5):\n",
        "  phi[i] = phi[i]**2"
      ],
      "execution_count": 89,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "-K62Bm_eNXyJ",
        "outputId": "67b35891-0290-4256-f4a0-8385ff1c3a61"
      },
      "source": [
        "phi"
      ],
      "execution_count": 86,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[0.4, 0.2, 0.35, 0.27, 0.44]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 86
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "IYYVRGClyVii",
        "outputId": "72d127f0-2990-4bfa-f1d2-48e4c364c9d1"
      },
      "source": [
        "2*phi"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[0.4, 0.2, 0.35, 0.27, 0.44, 0.4, 0.2, 0.35, 0.27, 0.44]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 3
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "AKhO0dKzyZXp"
      },
      "source": [
        "Not Doing what we want it to do. "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "f_zO7Q-qyYYy",
        "outputId": "dd63feb3-f08f-4cb3-c12d-417b317183c2"
      },
      "source": [
        "#Let's convert the list to a numpy array and do it again. \n",
        "phi_array = np.array(phi)\n",
        "\n",
        "phi_array**0.5"
      ],
      "execution_count": 90,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([0.4 , 0.2 , 0.35, 0.27, 0.44])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 90
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Pdo7YEccylEx",
        "outputId": "d91b2c71-2327-4d53-e3fc-c9dc6cb75516"
      },
      "source": [
        "#A 2D Matrix\n",
        "my_matrix = [[1,2,3],[4,5,6],[7,8,9]]\n",
        "my_matrix"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[[1, 2, 3], [4, 5, 6], [7, 8, 9]]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 5
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "xTLGcEbzyqfP",
        "outputId": "2ab15168-81d3-47ee-96e6-5456040d4848"
      },
      "source": [
        "\n",
        "A2 = np.array(my_matrix)\n",
        "\n",
        "A2**2"
      ],
      "execution_count": 91,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[ 1,  4,  9],\n",
              "       [16, 25, 36],\n",
              "       [49, 64, 81]])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 91
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "i0ki6ZcDywsP"
      },
      "source": [
        "# Built-in methods of NumPy"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9F4PLRpmy1Mm"
      },
      "source": [
        "1. np.arange : Generating a Vector of Range of Numbers. \n",
        "\n",
        "Eg. Saturation."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "1JlZ01KcyusC",
        "outputId": "a416bec5-3db5-4051-f0c8-0118e6410261"
      },
      "source": [
        "Sw = np.arange(start=0 , stop = 1, step = 0.005)\n",
        "\n",
        "Sw"
      ],
      "execution_count": 92,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([0.   , 0.005, 0.01 , 0.015, 0.02 , 0.025, 0.03 , 0.035, 0.04 ,\n",
              "       0.045, 0.05 , 0.055, 0.06 , 0.065, 0.07 , 0.075, 0.08 , 0.085,\n",
              "       0.09 , 0.095, 0.1  , 0.105, 0.11 , 0.115, 0.12 , 0.125, 0.13 ,\n",
              "       0.135, 0.14 , 0.145, 0.15 , 0.155, 0.16 , 0.165, 0.17 , 0.175,\n",
              "       0.18 , 0.185, 0.19 , 0.195, 0.2  , 0.205, 0.21 , 0.215, 0.22 ,\n",
              "       0.225, 0.23 , 0.235, 0.24 , 0.245, 0.25 , 0.255, 0.26 , 0.265,\n",
              "       0.27 , 0.275, 0.28 , 0.285, 0.29 , 0.295, 0.3  , 0.305, 0.31 ,\n",
              "       0.315, 0.32 , 0.325, 0.33 , 0.335, 0.34 , 0.345, 0.35 , 0.355,\n",
              "       0.36 , 0.365, 0.37 , 0.375, 0.38 , 0.385, 0.39 , 0.395, 0.4  ,\n",
              "       0.405, 0.41 , 0.415, 0.42 , 0.425, 0.43 , 0.435, 0.44 , 0.445,\n",
              "       0.45 , 0.455, 0.46 , 0.465, 0.47 , 0.475, 0.48 , 0.485, 0.49 ,\n",
              "       0.495, 0.5  , 0.505, 0.51 , 0.515, 0.52 , 0.525, 0.53 , 0.535,\n",
              "       0.54 , 0.545, 0.55 , 0.555, 0.56 , 0.565, 0.57 , 0.575, 0.58 ,\n",
              "       0.585, 0.59 , 0.595, 0.6  , 0.605, 0.61 , 0.615, 0.62 , 0.625,\n",
              "       0.63 , 0.635, 0.64 , 0.645, 0.65 , 0.655, 0.66 , 0.665, 0.67 ,\n",
              "       0.675, 0.68 , 0.685, 0.69 , 0.695, 0.7  , 0.705, 0.71 , 0.715,\n",
              "       0.72 , 0.725, 0.73 , 0.735, 0.74 , 0.745, 0.75 , 0.755, 0.76 ,\n",
              "       0.765, 0.77 , 0.775, 0.78 , 0.785, 0.79 , 0.795, 0.8  , 0.805,\n",
              "       0.81 , 0.815, 0.82 , 0.825, 0.83 , 0.835, 0.84 , 0.845, 0.85 ,\n",
              "       0.855, 0.86 , 0.865, 0.87 , 0.875, 0.88 , 0.885, 0.89 , 0.895,\n",
              "       0.9  , 0.905, 0.91 , 0.915, 0.92 , 0.925, 0.93 , 0.935, 0.94 ,\n",
              "       0.945, 0.95 , 0.955, 0.96 , 0.965, 0.97 , 0.975, 0.98 , 0.985,\n",
              "       0.99 , 0.995])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 92
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "4qoEy36RzL7e"
      },
      "source": [
        "2. Generate a Matrix/Array of 0s or 1s."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "mBMCdeLPzHhF",
        "outputId": "c9bc88f3-477b-496e-9208-25425ec60118"
      },
      "source": [
        "np.zeros((10,10))"
      ],
      "execution_count": 93,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
              "       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
              "       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
              "       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
              "       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
              "       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
              "       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
              "       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
              "       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
              "       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 93
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "mLQeRkRdzSO-"
      },
      "source": [
        "P = np.ones((10,10))\n",
        "Pi = 5000 #psi\n",
        "P = P*Pi"
      ],
      "execution_count": 95,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "7hI5zAYePn_R",
        "outputId": "372379d4-697c-42f4-ab8d-f840c607d784"
      },
      "source": [
        "P"
      ],
      "execution_count": 96,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000.,\n",
              "        5000.],\n",
              "       [5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000.,\n",
              "        5000.],\n",
              "       [5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000.,\n",
              "        5000.],\n",
              "       [5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000.,\n",
              "        5000.],\n",
              "       [5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000.,\n",
              "        5000.],\n",
              "       [5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000.,\n",
              "        5000.],\n",
              "       [5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000.,\n",
              "        5000.],\n",
              "       [5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000.,\n",
              "        5000.],\n",
              "       [5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000.,\n",
              "        5000.],\n",
              "       [5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000., 5000.,\n",
              "        5000.]])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 96
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "i_8mXSf0zZli"
      },
      "source": [
        "3. np.linspace : Create a Linearly Spaced vector."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Y-yT0QOuzUyQ",
        "outputId": "b16af65a-a086-4459-9b85-1df071f61f17"
      },
      "source": [
        "np.linspace(start = 0 , stop = 1 , num = 100)"
      ],
      "execution_count": 98,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([0.        , 0.01010101, 0.02020202, 0.03030303, 0.04040404,\n",
              "       0.05050505, 0.06060606, 0.07070707, 0.08080808, 0.09090909,\n",
              "       0.1010101 , 0.11111111, 0.12121212, 0.13131313, 0.14141414,\n",
              "       0.15151515, 0.16161616, 0.17171717, 0.18181818, 0.19191919,\n",
              "       0.2020202 , 0.21212121, 0.22222222, 0.23232323, 0.24242424,\n",
              "       0.25252525, 0.26262626, 0.27272727, 0.28282828, 0.29292929,\n",
              "       0.3030303 , 0.31313131, 0.32323232, 0.33333333, 0.34343434,\n",
              "       0.35353535, 0.36363636, 0.37373737, 0.38383838, 0.39393939,\n",
              "       0.4040404 , 0.41414141, 0.42424242, 0.43434343, 0.44444444,\n",
              "       0.45454545, 0.46464646, 0.47474747, 0.48484848, 0.49494949,\n",
              "       0.50505051, 0.51515152, 0.52525253, 0.53535354, 0.54545455,\n",
              "       0.55555556, 0.56565657, 0.57575758, 0.58585859, 0.5959596 ,\n",
              "       0.60606061, 0.61616162, 0.62626263, 0.63636364, 0.64646465,\n",
              "       0.65656566, 0.66666667, 0.67676768, 0.68686869, 0.6969697 ,\n",
              "       0.70707071, 0.71717172, 0.72727273, 0.73737374, 0.74747475,\n",
              "       0.75757576, 0.76767677, 0.77777778, 0.78787879, 0.7979798 ,\n",
              "       0.80808081, 0.81818182, 0.82828283, 0.83838384, 0.84848485,\n",
              "       0.85858586, 0.86868687, 0.87878788, 0.88888889, 0.8989899 ,\n",
              "       0.90909091, 0.91919192, 0.92929293, 0.93939394, 0.94949495,\n",
              "       0.95959596, 0.96969697, 0.97979798, 0.98989899, 1.        ])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 98
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "agNl_qr1zo-3"
      },
      "source": [
        "4. np.eye : Create an Identity Matrix."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "SY2d7-jPzkN3",
        "outputId": "9261f919-0db2-45ad-9b8c-85946565f676"
      },
      "source": [
        "np.eye(5) # 4x4 Identity Matrix"
      ],
      "execution_count": 99,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[1., 0., 0., 0., 0.],\n",
              "       [0., 1., 0., 0., 0.],\n",
              "       [0., 0., 1., 0., 0.],\n",
              "       [0., 0., 0., 1., 0.],\n",
              "       [0., 0., 0., 0., 1.]])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 99
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9X2fIOtIz0w7"
      },
      "source": [
        "## NumPy's Random Number Generation Capabilities."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "lZgwj5PZ0kkG"
      },
      "source": [
        "Generate 3 Random Numbers from a Uniform Distribution in [0,1) interval"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "QM3Dz3hWzwxi",
        "outputId": "c51e4e8d-d63e-4cd6-b688-d506a11bd1b8"
      },
      "source": [
        "np.random.rand(3)"
      ],
      "execution_count": 101,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([0.29765699, 0.98903906, 0.22353677])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 101
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "lMOeKfpY0xTV"
      },
      "source": [
        "Generate 5 Random Samples from Standard Normal Distribution."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "L6DuVu4B0ar4",
        "outputId": "c8b15458-3fa9-4592-bd43-57e05eb58921"
      },
      "source": [
        "np.random.randn(5)"
      ],
      "execution_count": 16,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([ 1.37710354, -2.01278539,  1.66007349,  1.88203505, -0.35254634])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 16
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "9yL0TyEa03mQ",
        "outputId": "7e4ccca8-1b20-4d51-cded-b927c6f5fc07"
      },
      "source": [
        "#MAtrix containing all SND values. \n",
        "np.random.randn(7000,5)"
      ],
      "execution_count": 102,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[ 1.96773329,  1.32788049,  0.12659496,  1.72309875, -0.07746591],\n",
              "       [ 1.82787214,  0.30832428,  0.64173028, -0.55261589,  0.90131923],\n",
              "       [-0.70942399,  2.5530326 ,  1.9371735 , -0.48668674,  0.17080277],\n",
              "       ...,\n",
              "       [-1.43510458,  0.30860086,  0.43482077,  0.42544275, -0.08406665],\n",
              "       [-0.67506255, -1.19003494,  1.74330016,  0.66187072, -0.73667764],\n",
              "       [ 1.14218215,  0.42645458, -0.59164283,  0.31159763,  0.93865275]])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 102
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "pn7fjP-r1JvA"
      },
      "source": [
        "'Randint' to generate random integers."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "dmAVjrmu1JO6",
        "outputId": "20df51b3-a46b-4fc0-8312-def84d2ca4b0"
      },
      "source": [
        "np.random.randint(low=1, high=100, size=10)"
      ],
      "execution_count": 103,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([25, 71, 64, 96, 74,  8, 60, 24,  6, 83])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 103
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "R3FUv1Gb1Fvr"
      },
      "source": [
        "## Shape and Reshape of an array"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "DPn3libE09jU",
        "outputId": "faf9885c-dbc1-45ba-8d7d-7b645e03e18e"
      },
      "source": [
        "# 1. Reshaping a 100 value arrray to a 10x10 matrix. \n",
        "v100 = np.linspace(0,1,100)\n",
        "v100.shape\n",
        "v100"
      ],
      "execution_count": 105,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([0.        , 0.01010101, 0.02020202, 0.03030303, 0.04040404,\n",
              "       0.05050505, 0.06060606, 0.07070707, 0.08080808, 0.09090909,\n",
              "       0.1010101 , 0.11111111, 0.12121212, 0.13131313, 0.14141414,\n",
              "       0.15151515, 0.16161616, 0.17171717, 0.18181818, 0.19191919,\n",
              "       0.2020202 , 0.21212121, 0.22222222, 0.23232323, 0.24242424,\n",
              "       0.25252525, 0.26262626, 0.27272727, 0.28282828, 0.29292929,\n",
              "       0.3030303 , 0.31313131, 0.32323232, 0.33333333, 0.34343434,\n",
              "       0.35353535, 0.36363636, 0.37373737, 0.38383838, 0.39393939,\n",
              "       0.4040404 , 0.41414141, 0.42424242, 0.43434343, 0.44444444,\n",
              "       0.45454545, 0.46464646, 0.47474747, 0.48484848, 0.49494949,\n",
              "       0.50505051, 0.51515152, 0.52525253, 0.53535354, 0.54545455,\n",
              "       0.55555556, 0.56565657, 0.57575758, 0.58585859, 0.5959596 ,\n",
              "       0.60606061, 0.61616162, 0.62626263, 0.63636364, 0.64646465,\n",
              "       0.65656566, 0.66666667, 0.67676768, 0.68686869, 0.6969697 ,\n",
              "       0.70707071, 0.71717172, 0.72727273, 0.73737374, 0.74747475,\n",
              "       0.75757576, 0.76767677, 0.77777778, 0.78787879, 0.7979798 ,\n",
              "       0.80808081, 0.81818182, 0.82828283, 0.83838384, 0.84848485,\n",
              "       0.85858586, 0.86868687, 0.87878788, 0.88888889, 0.8989899 ,\n",
              "       0.90909091, 0.91919192, 0.92929293, 0.93939394, 0.94949495,\n",
              "       0.95959596, 0.96969697, 0.97979798, 0.98989899, 1.        ])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 105
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "gso5rcyp1z5T",
        "outputId": "c4950b2a-3be8-4c52-ce08-d84c2d20d1fb"
      },
      "source": [
        "m10_10 = v100.reshape(10,10)\n",
        "m10_10.shape"
      ],
      "execution_count": 107,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(10, 10)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 107
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "SIpEPWHu13X_",
        "outputId": "90836790-6455-41f0-ebbd-e615d6a7a129"
      },
      "source": [
        "m10_10.shape"
      ],
      "execution_count": 22,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(10, 10)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 22
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "sC7qq7T21_Se"
      },
      "source": [
        "### max-min-argmax-argmin. \n",
        "\n",
        "1. np.max : returns max value in array. \n",
        "2. np.min : returns min value in array. \n",
        "3. np.argmax : returns positon (index) of max value. \n",
        "4. np.argmin : \" \" of min value."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "iAYqGlEY17Kd"
      },
      "source": [
        "ranarr = np.random.randint(0,50,15)"
      ],
      "execution_count": 108,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "NT9Jkr402Wmy",
        "outputId": "59bb3805-8d83-4668-b835-6ef8f4bb2e5e"
      },
      "source": [
        "ranarr"
      ],
      "execution_count": 114,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([14, 24, 26,  8, 27,  9,  8, 43, 44, 10, 46, 42,  2, 27, 37])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 114
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "y3W9soMg2Y-r",
        "outputId": "40f1e005-c9f6-4197-880a-a9377796882f"
      },
      "source": [
        "ranarr[np.argmin(ranarr)]"
      ],
      "execution_count": 116,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "2"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 116
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Vza6x5tY2yKu",
        "outputId": "efdb662f-b559-4842-a4c6-1e786de74771"
      },
      "source": [
        "np.max(ranarr)"
      ],
      "execution_count": 111,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "46"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 111
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "4vBN3oi422e7",
        "outputId": "7b136890-cd62-49f6-cf80-0c97e7c78202"
      },
      "source": [
        "np.argmin(ranarr)"
      ],
      "execution_count": 28,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "4"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 28
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "SXGOQx1M25GJ",
        "outputId": "08f26e1d-7213-43f4-cd54-6df1992e4004"
      },
      "source": [
        "ranarr[2]"
      ],
      "execution_count": 113,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "26"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 113
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "zEqOu7x0267i",
        "outputId": "8c159e29-13fd-4b94-ee11-05af98c0d5c7"
      },
      "source": [
        "np.argmax(ranarr)"
      ],
      "execution_count": 30,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "8"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 30
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "jF96v_Sp2-_h",
        "outputId": "de4d5ec0-0c11-46d8-cdfc-b7f254552354"
      },
      "source": [
        "ranarr[8]"
      ],
      "execution_count": 31,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "48"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 31
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GYz7lOJq3Wxt"
      },
      "source": [
        "## Indexing, Selection and Broadcasting."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "X9Qzrcu73BQC"
      },
      "source": [
        "arr = np.linspace(0,1,10)"
      ],
      "execution_count": 33,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "mZgFMkOZ3odi",
        "outputId": "8106a737-d8db-4125-8e80-84262c40b930"
      },
      "source": [
        "arr"
      ],
      "execution_count": 34,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([0.        , 0.11111111, 0.22222222, 0.33333333, 0.44444444,\n",
              "       0.55555556, 0.66666667, 0.77777778, 0.88888889, 1.        ])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 34
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "LBSn1Wjq3ugT"
      },
      "source": [
        "#indexing. Just like lists"
      ],
      "execution_count": 35,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "gup8Wkfj30ky",
        "outputId": "629f4ef9-ce43-4566-dc84-2e724c6cdb50"
      },
      "source": [
        "arr[7]"
      ],
      "execution_count": 36,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "0.7777777777777777"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 36
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Hvs-4Ins31qp",
        "outputId": "802af69e-a0f7-4aea-8949-fdf0d2f49125"
      },
      "source": [
        "#slicing. \n",
        "arr[0:7]"
      ],
      "execution_count": 37,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([0.        , 0.11111111, 0.22222222, 0.33333333, 0.44444444,\n",
              "       0.55555556, 0.66666667])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 37
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "BIDCOlgy34fW",
        "outputId": "9ddcaaa7-9f3d-4ed0-edc7-3297a3b6e99e"
      },
      "source": [
        "#Note that a slice is the view of the same array than a new array. \n",
        "#Any changes made to the slice are reflected in the array. \n",
        "arr[0:3] = 1000\n",
        "arr"
      ],
      "execution_count": 38,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([1.00000000e+03, 1.00000000e+03, 1.00000000e+03, 3.33333333e-01,\n",
              "       4.44444444e-01, 5.55555556e-01, 6.66666667e-01, 7.77777778e-01,\n",
              "       8.88888889e-01, 1.00000000e+00])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 38
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "6Ki6ehJf4GXn"
      },
      "source": [
        "#In order to prevent that from happening. make a copy. \n",
        "\n",
        "# slice_array_version = array.copy()"
      ],
      "execution_count": 40,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "omB4Lynr4YKV"
      },
      "source": [
        "### Indexing a 2D array/"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "wqu6_7c54S3H",
        "outputId": "49c50be6-f9b4-4d50-a89c-8dbfa4474f6b"
      },
      "source": [
        "a2d = np.array(([5,10,15],[20,25,30],[35,40,45]))\n",
        "\n",
        "a2d"
      ],
      "execution_count": 41,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[ 5, 10, 15],\n",
              "       [20, 25, 30],\n",
              "       [35, 40, 45]])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 41
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "AZFrG4G44dy_",
        "outputId": "b040fc20-b450-44e9-d404-30f59137a884"
      },
      "source": [
        "a2d[0,1]"
      ],
      "execution_count": 43,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "10"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 43
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tK2qqIMo4hRd"
      },
      "source": [
        "# a2d[ rowmin : rowmax+1 , :]"
      ],
      "execution_count": 44,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "c9mZA9p44n8Q",
        "outputId": "093b5799-26ac-4b15-815f-a74f3ddf8a5f"
      },
      "source": [
        "a2d[:2,1:]"
      ],
      "execution_count": 45,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[10, 15],\n",
              "       [25, 30]])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 45
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Bu811q-u4tgE"
      },
      "source": [
        "## Selection based on a condition"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "gmBIqJoe4qXR",
        "outputId": "a4a2ec1a-61ee-43be-d401-cb363dbf1ce6"
      },
      "source": [
        "Marks = np.random.randint(1,100,1000)\n",
        "\n",
        "Marks"
      ],
      "execution_count": 117,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([36, 63, 34, 66, 94, 26, 33, 68, 84, 46, 21, 44, 73,  5,  5,  1, 44,\n",
              "       48,  2, 71, 81, 55, 66, 27, 59, 55, 11, 55, 21, 11, 84, 34, 27, 37,\n",
              "       13, 31, 19, 36, 39, 81, 94, 23, 17, 22, 69, 65, 41, 36, 64, 12, 77,\n",
              "       66, 62, 11, 92, 53, 13, 75, 80, 20, 90, 69, 87, 41, 50,  2, 75, 76,\n",
              "       27, 82, 90, 25, 39, 82, 87, 41, 20, 80, 64,  9, 58, 35, 44, 83, 17,\n",
              "       30, 97, 25, 39, 27,  6, 81, 77, 67, 75, 69, 79,  6, 95, 26, 98, 71,\n",
              "       15, 60, 88, 62, 25,  1, 89, 81, 39, 23, 26,  5, 68, 74, 29, 29, 70,\n",
              "       98, 20, 31,  5, 53, 64, 11, 75, 80, 88, 73, 83, 36, 19, 14,  2, 13,\n",
              "       76,  4, 15, 79, 53, 15, 19, 72, 22, 88, 14, 11, 68, 12, 11, 81, 34,\n",
              "       80, 57, 68, 99, 57, 57, 77, 33, 46, 21, 73, 84, 18, 76, 49, 69, 70,\n",
              "        8, 96, 86, 93, 52, 22,  4, 26, 35, 24, 94, 23, 35, 11, 83, 15, 40,\n",
              "       20, 67, 96, 54, 67, 50, 47,  6, 88, 23, 93, 69, 96, 81, 82, 37, 26,\n",
              "       59, 72, 55, 52, 56, 45,  9, 14, 98,  5, 57, 54, 44, 77, 70, 69, 95,\n",
              "       75, 78, 12, 49, 55, 64, 65, 89, 59, 79, 90, 75, 19, 32, 20, 25, 21,\n",
              "       31, 78, 81, 34, 31,  3,  8, 68, 63,  9, 17, 84, 33, 66,  8, 27, 58,\n",
              "       30, 16, 96, 22, 49, 66, 51,  6, 63, 75, 28, 80, 43, 77, 30, 75, 63,\n",
              "       76, 88, 35, 55, 80, 20, 95, 75,  7, 11, 23,  4, 71,  7, 24, 11, 80,\n",
              "       11, 67, 96, 72, 56, 78, 11, 39, 63,  9, 21, 17, 89, 25, 99, 70, 78,\n",
              "       16, 28, 99, 58,  3, 30, 90, 48, 58, 21,  8, 83, 10, 24, 91, 89, 89,\n",
              "       30, 26, 44, 82, 14, 59, 45, 15, 83, 42, 44, 70, 93, 94, 38, 91,  6,\n",
              "       16, 52, 83, 19, 40, 70, 91, 82,  9, 82, 50, 49, 82, 90, 24, 87, 67,\n",
              "       63,  7, 35, 57, 36, 56, 27, 10, 70, 44, 45, 84, 11, 75, 64, 67, 33,\n",
              "       45, 79, 32, 91, 56, 57, 47, 95, 80, 67, 81, 27, 84, 10, 26, 83, 79,\n",
              "       79, 37, 40, 56, 27, 34,  2, 22, 76, 74, 24, 26, 32, 45, 80, 90, 16,\n",
              "       61, 35, 59, 65, 84, 36, 30, 51, 93,  6, 53, 57, 69, 32, 10, 63,  5,\n",
              "       58, 38, 79, 54,  9, 72, 47, 92, 34, 14, 10, 42, 26, 91, 24, 84,  8,\n",
              "       84, 65,  7, 15, 72,  6, 88, 53, 10, 66, 46, 91, 39, 50, 30, 56, 45,\n",
              "       14, 84, 31, 54, 59, 64, 24, 82, 19, 32, 49,  9, 19, 42, 63, 22, 11,\n",
              "       46, 67, 14, 48, 11, 45, 75, 75, 58,  5, 21, 55, 61, 97, 89, 20,  4,\n",
              "       86, 91, 87, 45,  9, 56, 94, 75, 65, 17, 85,  9, 75, 33, 40, 64,  8,\n",
              "       10, 93, 82, 78, 75, 41,  3, 46, 30, 11, 53, 61, 79, 86, 31, 75,  8,\n",
              "       68, 50, 36, 95, 95, 34, 86, 88, 74, 93, 57, 64,  4, 72, 69, 87, 39,\n",
              "       46, 74, 11, 46, 44,  9, 95, 99, 92,  4, 92, 36, 95, 36, 79, 50, 91,\n",
              "       88, 66, 63, 24, 98, 81, 25, 89, 65, 39, 61, 42, 10, 64, 98, 56, 69,\n",
              "       49, 72, 65, 39, 30, 57, 54,  7, 94, 45, 40, 58, 74,  8, 92, 91, 58,\n",
              "       21, 34, 90, 10,  4, 97, 31, 92,  8,  5, 72, 64, 81, 49, 57,  5, 97,\n",
              "       69, 91, 26, 42, 86, 16, 10, 75, 48, 38, 27, 10, 41, 48, 10, 99, 72,\n",
              "       55, 22, 88,  1, 44, 83, 36, 42, 85, 42, 67, 24, 61, 22, 83, 31, 61,\n",
              "       64, 34, 80, 44, 34, 69, 52,  5,  2, 47,  3, 49, 55, 50, 65, 87, 96,\n",
              "       41, 83, 21, 42,  8, 18, 72, 91, 30, 50, 26, 37, 62, 31, 37,  8, 67,\n",
              "       86, 52, 54, 65, 26, 89,  8, 84, 58, 98, 98,  4, 97, 53, 38, 18, 52,\n",
              "       19, 63, 10, 72, 98, 53, 81, 72, 85, 90, 25, 23, 29, 12, 17, 58, 56,\n",
              "       47, 81,  4, 53, 48,  2, 90, 63, 76, 51, 81, 20, 74, 29, 66, 75, 17,\n",
              "       56, 82, 97, 34, 23, 46, 77, 88, 97, 36, 55, 18,  5, 34, 40, 95, 31,\n",
              "       39, 63, 56, 79, 39, 73, 60, 85, 46, 67, 34, 81, 54, 32, 23, 39,  2,\n",
              "       58, 88, 67, 40, 90, 59, 39, 15, 80, 64, 78, 42, 32, 36,  7, 98, 26,\n",
              "       36, 35, 99, 94, 43,  8, 35, 88, 42, 50, 11, 71, 52, 39, 85, 70, 47,\n",
              "       55, 11, 51,  1,  9, 56, 88, 31, 77, 62, 83, 48, 61, 47,  8, 92, 73,\n",
              "       97, 44, 43, 91, 50, 10, 45, 13, 73, 83, 23, 15, 94, 34, 74, 41, 34,\n",
              "       65, 18, 33, 77, 66,  1, 76, 26, 54, 29, 62, 50, 24, 34, 61, 12, 60,\n",
              "       53, 46,  2, 96,  6,  1, 50, 98, 80, 55, 41, 23, 44, 31, 56, 11, 68,\n",
              "       86, 30, 87, 90, 58,  5, 34,  5, 28, 81, 91,  2, 58, 32, 72, 96,  6,\n",
              "       13, 47, 55, 12, 23, 54, 83, 12,  8,  8, 65, 44, 89, 57, 21, 48, 46,\n",
              "       67,  1, 63,  9, 75, 37, 17, 77, 71, 91, 16, 28, 96, 70, 50, 48, 13,\n",
              "       74, 57, 76, 98,  1, 32, 26, 99, 68, 41, 15, 53,  6, 62, 64, 39, 68,\n",
              "       87, 13, 75, 31, 65, 97, 71,  9, 52, 48, 91, 77, 42, 47, 48,  4, 14,\n",
              "       36, 77, 13, 25,  1, 13, 64, 24, 54, 98, 89, 98, 11, 16, 64,  3, 17,\n",
              "       61, 75, 43, 33, 69,  6, 23, 51, 25, 89, 51, 95, 15, 80,  9, 68, 12,\n",
              "       92, 37, 70, 51,  7, 90, 68,  2, 14,  8, 15,  7, 50, 93])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 117
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "_VqJx6yn4zDG"
      },
      "source": [
        "selected = Marks[Marks>75]"
      ],
      "execution_count": 50,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "J0NPyAq5UtDs",
        "outputId": "25b0a3bc-3556-452c-b587-04df5d4bb6ba",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "Marks[Marks>75].shape"
      ],
      "execution_count": 120,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(239,)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 120
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ZZAlcNkR46en",
        "outputId": "a2a1dfc9-b508-47eb-e56a-390306f88885"
      },
      "source": [
        "selected"
      ],
      "execution_count": 51,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([96, 84, 79, 83, 97, 84, 92, 87, 78, 79, 83, 84, 78, 87, 80, 80, 86,\n",
              "       78, 96, 79, 82, 80, 77, 88, 77, 90, 93, 78, 91, 95, 90, 78, 86, 80,\n",
              "       88, 97, 99, 94, 97, 81, 81, 80, 99, 83, 84, 92, 95, 85, 91, 97, 89,\n",
              "       82, 99, 80, 77, 77, 89, 92, 80, 95, 99, 76, 76, 88, 97, 96, 85, 95,\n",
              "       98, 86, 87, 86, 83, 97, 88, 86, 93, 93, 86, 96, 89, 80, 88, 95, 82,\n",
              "       79, 98, 79, 77, 87, 79, 88, 85, 77, 95, 95, 76, 89, 97, 81, 89, 85,\n",
              "       94, 80, 82, 95, 93, 85, 92, 76, 86, 86, 91, 85, 91, 80, 80, 80, 93,\n",
              "       85, 85, 90, 87, 98, 96, 78, 99, 97, 99, 90, 93, 88, 86, 94, 83, 91,\n",
              "       85, 87, 82, 76, 82, 80, 90, 96, 96, 85, 85, 80, 97, 82, 82, 86, 95,\n",
              "       86, 76, 98, 90, 83, 85, 84, 88, 85, 85, 99, 80, 93, 83, 85, 77, 80,\n",
              "       91, 94, 80, 92, 90, 76, 91, 83, 93, 97, 93, 76, 86, 78, 79, 78, 93,\n",
              "       91, 98, 93, 99, 87, 92, 77, 99, 88, 97, 86, 83, 88, 94, 92, 93, 92,\n",
              "       93, 92, 91, 97, 94, 77, 79, 98, 77, 87, 98, 98, 91, 76, 95, 87, 92,\n",
              "       82, 91, 93, 93, 89, 77, 90, 82, 78, 79, 77, 91, 80, 91, 99, 95, 80,\n",
              "       78, 76, 83, 90, 77, 84])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 51
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "WC2m-5lR5Kr0"
      },
      "source": [
        "## Operations : Note that NumPy arrays operate on term by term basis. Each operation is applied to every term."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "O9PIDIJS4-xq"
      },
      "source": [
        "A = np.arange(0,10)"
      ],
      "execution_count": 52,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "MPdoVsGL5VV4",
        "outputId": "6ff89b07-562d-4f79-fe20-9f34d6ec3458"
      },
      "source": [
        "A**2"
      ],
      "execution_count": 54,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 54
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "twuY6ENr5WJM",
        "outputId": "49509091-8322-49fa-8c39-8d29689603cf"
      },
      "source": [
        "A + A"
      ],
      "execution_count": 55,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 55
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "l4Gf9DQo5YrK",
        "outputId": "7c3cee6c-04c2-450f-d0fc-8686dba85619"
      },
      "source": [
        "np.sin(A)"
      ],
      "execution_count": 56,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([ 0.        ,  0.84147098,  0.90929743,  0.14112001, -0.7568025 ,\n",
              "       -0.95892427, -0.2794155 ,  0.6569866 ,  0.98935825,  0.41211849])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 56
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "KXe5isMn5bCE",
        "outputId": "8e7a4cbd-b24b-4c08-c0d8-ee03b14405c5"
      },
      "source": [
        "np.cos(A)"
      ],
      "execution_count": 57,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([ 1.        ,  0.54030231, -0.41614684, -0.9899925 , -0.65364362,\n",
              "        0.28366219,  0.96017029,  0.75390225, -0.14550003, -0.91113026])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 57
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ZtXFc-2v5efq"
      },
      "source": [
        "These are Universal Array Functions. \n",
        "\n",
        "Further reading : http://docs.scipy.org/doc/numpy/reference/ufuncs.html"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "-wsnHETP5cNe"
      },
      "source": [
        "###################################################################"
      ],
      "execution_count": 58,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tAjzYbek5-xt"
      },
      "source": [
        "## 2. Python Pandas : The Ms. Excel of Python."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "L4n61bBH6YML"
      },
      "source": [
        "### 2.1 Python Series : Like a Named Array/"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "vOzjhc0tVJlt"
      },
      "source": [
        "NumPy -- Series --- DataFrame "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "sG9noWeN6mjG"
      },
      "source": [
        "import pandas as pd"
      ],
      "execution_count": 121,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Nkd7C6_B57O-"
      },
      "source": [
        "values = [1,2,3,4,5]\n",
        "labels = ['a' , 'b' , 'c' , 'd' , 'e']"
      ],
      "execution_count": 59,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "My4i_w0o6ihC"
      },
      "source": [
        "S = pd.Series(values,labels)"
      ],
      "execution_count": 62,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "RAIVZF2Q6k8R",
        "outputId": "843edabd-84cc-47ec-99ee-508787e43a71"
      },
      "source": [
        "S"
      ],
      "execution_count": 63,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "a    1\n",
              "b    2\n",
              "c    3\n",
              "d    4\n",
              "e    5\n",
              "dtype: int64"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 63
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Ma2FfYof6rJt",
        "outputId": "c707da0e-7f06-4239-ba54-98e813fbe979"
      },
      "source": [
        "S['a']"
      ],
      "execution_count": 64,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "1"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 64
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "-MXIkPCE6udt",
        "outputId": "83f50dc0-9ecd-4389-a187-226a99e4df34"
      },
      "source": [
        "pd.Series(values,index = labels)"
      ],
      "execution_count": 65,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "a    1\n",
              "b    2\n",
              "c    3\n",
              "d    4\n",
              "e    5\n",
              "dtype: int64"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 65
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tEfNKHT166p1"
      },
      "source": [
        "## 2.2 : DataFrames"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "OAq0xjVHWNYt"
      },
      "source": [
        "1. DF from a Dictionary."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "aruf1_xa60k6"
      },
      "source": [
        "rock = {'phi': [0.05 , 0.20 , 0.25 , 0.08],\n",
        "        'lith': ['C', 'S', 'S','C']}\n",
        "\n",
        "rock_df = pd.DataFrame(rock)"
      ],
      "execution_count": 122,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 172
        },
        "id": "hdWCCrZR7MlY",
        "outputId": "e088809c-6fd1-4829-a76b-3e67568528e3"
      },
      "source": [
        "rock_df"
      ],
      "execution_count": 123,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>phi</th>\n",
              "      <th>lith</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0.05</td>\n",
              "      <td>C</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>0.20</td>\n",
              "      <td>S</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>0.25</td>\n",
              "      <td>S</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>0.08</td>\n",
              "      <td>C</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "    phi lith\n",
              "0  0.05    C\n",
              "1  0.20    S\n",
              "2  0.25    S\n",
              "3  0.08    C"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 123
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "y1G-g5gL7R9K",
        "outputId": "d3a2f111-e2a6-4768-acb4-b506d7ac6533"
      },
      "source": [
        "rock['phi']"
      ],
      "execution_count": 124,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[0.05, 0.2, 0.25, 0.08]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 124
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "L7PnJwJS7mAp"
      },
      "source": [
        "#Creating a DataFrame from an array."
      ],
      "execution_count": 70,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        },
        "id": "GFOEQ0Dd7t7R",
        "outputId": "36084178-2f31-4e27-9f05-861cc6ac2d77"
      },
      "source": [
        "df = pd.DataFrame(data = np.random.randn(5,4),index='A B C D E'.split(),columns='W X Y Z'.split())\n",
        "\n",
        "df"
      ],
      "execution_count": 125,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>W</th>\n",
              "      <th>X</th>\n",
              "      <th>Y</th>\n",
              "      <th>Z</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>A</th>\n",
              "      <td>-1.182853</td>\n",
              "      <td>-0.513556</td>\n",
              "      <td>-0.515698</td>\n",
              "      <td>0.494726</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>B</th>\n",
              "      <td>-0.577124</td>\n",
              "      <td>0.886354</td>\n",
              "      <td>-1.588290</td>\n",
              "      <td>-1.587124</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>C</th>\n",
              "      <td>-0.240799</td>\n",
              "      <td>0.123911</td>\n",
              "      <td>-1.001634</td>\n",
              "      <td>0.902924</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>D</th>\n",
              "      <td>-0.427675</td>\n",
              "      <td>0.080528</td>\n",
              "      <td>-0.625017</td>\n",
              "      <td>-0.778859</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>E</th>\n",
              "      <td>2.248956</td>\n",
              "      <td>0.264856</td>\n",
              "      <td>0.344202</td>\n",
              "      <td>-1.435114</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "          W         X         Y         Z\n",
              "A -1.182853 -0.513556 -0.515698  0.494726\n",
              "B -0.577124  0.886354 -1.588290 -1.587124\n",
              "C -0.240799  0.123911 -1.001634  0.902924\n",
              "D -0.427675  0.080528 -0.625017 -0.778859\n",
              "E  2.248956  0.264856  0.344202 -1.435114"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 125
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "cXeuQriC7wZQ"
      },
      "source": [
        "# df"
      ],
      "execution_count": 126,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "e7yWUvZm7zrn",
        "outputId": "732dc5a8-de52-46f6-d8ec-925945d84bca"
      },
      "source": [
        "df['W']"
      ],
      "execution_count": 74,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "A   -0.709325\n",
              "B    0.239717\n",
              "C   -0.833494\n",
              "D    0.252288\n",
              "E   -0.012246\n",
              "Name: W, dtype: float64"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 74
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        },
        "id": "v7YdfZyG71gi",
        "outputId": "db5b4421-0fd5-43d2-d0b7-613c7620cbef"
      },
      "source": [
        "#Adding a NEw column. \n",
        "\n",
        "df['W_squared'] = df['W']**2\n",
        "\n",
        "df"
      ],
      "execution_count": 76,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>W</th>\n",
              "      <th>X</th>\n",
              "      <th>Y</th>\n",
              "      <th>Z</th>\n",
              "      <th>W_squared</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>A</th>\n",
              "      <td>-0.709325</td>\n",
              "      <td>-0.398991</td>\n",
              "      <td>2.255707</td>\n",
              "      <td>1.286425</td>\n",
              "      <td>0.503142</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>B</th>\n",
              "      <td>0.239717</td>\n",
              "      <td>-0.993057</td>\n",
              "      <td>-1.434999</td>\n",
              "      <td>-0.777527</td>\n",
              "      <td>0.057464</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>C</th>\n",
              "      <td>-0.833494</td>\n",
              "      <td>0.910116</td>\n",
              "      <td>-0.249891</td>\n",
              "      <td>0.342504</td>\n",
              "      <td>0.694712</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>D</th>\n",
              "      <td>0.252288</td>\n",
              "      <td>-0.240984</td>\n",
              "      <td>-0.607454</td>\n",
              "      <td>-0.266429</td>\n",
              "      <td>0.063649</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>E</th>\n",
              "      <td>-0.012246</td>\n",
              "      <td>-0.213262</td>\n",
              "      <td>-1.522099</td>\n",
              "      <td>-0.727474</td>\n",
              "      <td>0.000150</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "          W         X         Y         Z  W_squared\n",
              "A -0.709325 -0.398991  2.255707  1.286425   0.503142\n",
              "B  0.239717 -0.993057 -1.434999 -0.777527   0.057464\n",
              "C -0.833494  0.910116 -0.249891  0.342504   0.694712\n",
              "D  0.252288 -0.240984 -0.607454 -0.266429   0.063649\n",
              "E -0.012246 -0.213262 -1.522099 -0.727474   0.000150"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 76
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        },
        "id": "iMB8ZIXO7_PA",
        "outputId": "0d4dfb84-ab6d-4577-b875-7af14674e1b2"
      },
      "source": [
        "df['new'] = df['X'] + df['Y']\n",
        "\n",
        "df"
      ],
      "execution_count": 77,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>W</th>\n",
              "      <th>X</th>\n",
              "      <th>Y</th>\n",
              "      <th>Z</th>\n",
              "      <th>W_squared</th>\n",
              "      <th>new</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>A</th>\n",
              "      <td>-0.709325</td>\n",
              "      <td>-0.398991</td>\n",
              "      <td>2.255707</td>\n",
              "      <td>1.286425</td>\n",
              "      <td>0.503142</td>\n",
              "      <td>1.856716</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>B</th>\n",
              "      <td>0.239717</td>\n",
              "      <td>-0.993057</td>\n",
              "      <td>-1.434999</td>\n",
              "      <td>-0.777527</td>\n",
              "      <td>0.057464</td>\n",
              "      <td>-2.428056</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>C</th>\n",
              "      <td>-0.833494</td>\n",
              "      <td>0.910116</td>\n",
              "      <td>-0.249891</td>\n",
              "      <td>0.342504</td>\n",
              "      <td>0.694712</td>\n",
              "      <td>0.660225</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>D</th>\n",
              "      <td>0.252288</td>\n",
              "      <td>-0.240984</td>\n",
              "      <td>-0.607454</td>\n",
              "      <td>-0.266429</td>\n",
              "      <td>0.063649</td>\n",
              "      <td>-0.848438</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>E</th>\n",
              "      <td>-0.012246</td>\n",
              "      <td>-0.213262</td>\n",
              "      <td>-1.522099</td>\n",
              "      <td>-0.727474</td>\n",
              "      <td>0.000150</td>\n",
              "      <td>-1.735361</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "          W         X         Y         Z  W_squared       new\n",
              "A -0.709325 -0.398991  2.255707  1.286425   0.503142  1.856716\n",
              "B  0.239717 -0.993057 -1.434999 -0.777527   0.057464 -2.428056\n",
              "C -0.833494  0.910116 -0.249891  0.342504   0.694712  0.660225\n",
              "D  0.252288 -0.240984 -0.607454 -0.266429   0.063649 -0.848438\n",
              "E -0.012246 -0.213262 -1.522099 -0.727474   0.000150 -1.735361"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 77
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "2cEIl-009GLc",
        "outputId": "a88b08d9-03f3-4816-e624-1975943788a9"
      },
      "source": [
        "df.plot()"
      ],
      "execution_count": 78,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7fc40f148f10>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 78
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Ki6MBGSI9QLK"
      },
      "source": [
        "## Loc and I-Loc. \n",
        "\n",
        "1. loc starts with 'l' : so it considers labels. \n",
        "\n",
        "2. iloc starts with 'i' so it considers indexes."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 110
        },
        "id": "xyKNfQEQ9H9P",
        "outputId": "e3c22f35-f9db-4c41-e975-8fabf2363c85"
      },
      "source": [
        "df.iloc[0:2,0:2]"
      ],
      "execution_count": 129,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>W</th>\n",
              "      <th>X</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>A</th>\n",
              "      <td>-1.182853</td>\n",
              "      <td>-0.513556</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>B</th>\n",
              "      <td>-0.577124</td>\n",
              "      <td>0.886354</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "          W         X\n",
              "A -1.182853 -0.513556\n",
              "B -0.577124  0.886354"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 129
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Cx-u2gAH9b_v"
      },
      "source": [
        "### Pick first two rows using loc. "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 110
        },
        "id": "tscoRC659a1N",
        "outputId": "c6380e5a-9b23-4321-857e-6db96f241429"
      },
      "source": [
        "df.loc['A':'B',:]"
      ],
      "execution_count": 80,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>W</th>\n",
              "      <th>X</th>\n",
              "      <th>Y</th>\n",
              "      <th>Z</th>\n",
              "      <th>W_squared</th>\n",
              "      <th>new</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>A</th>\n",
              "      <td>-0.709325</td>\n",
              "      <td>-0.398991</td>\n",
              "      <td>2.255707</td>\n",
              "      <td>1.286425</td>\n",
              "      <td>0.503142</td>\n",
              "      <td>1.856716</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>B</th>\n",
              "      <td>0.239717</td>\n",
              "      <td>-0.993057</td>\n",
              "      <td>-1.434999</td>\n",
              "      <td>-0.777527</td>\n",
              "      <td>0.057464</td>\n",
              "      <td>-2.428056</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "          W         X         Y         Z  W_squared       new\n",
              "A -0.709325 -0.398991  2.255707  1.286425   0.503142  1.856716\n",
              "B  0.239717 -0.993057 -1.434999 -0.777527   0.057464 -2.428056"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 80
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "cZeZHXiB9l6W"
      },
      "source": [
        "### Pick first two rows using iloc."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 110
        },
        "id": "wj8iJTMO9kYB",
        "outputId": "94f586db-43d9-4784-ad75-ae2dc3989d4f"
      },
      "source": [
        "df.iloc[0:2, :]"
      ],
      "execution_count": 81,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>W</th>\n",
              "      <th>X</th>\n",
              "      <th>Y</th>\n",
              "      <th>Z</th>\n",
              "      <th>W_squared</th>\n",
              "      <th>new</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>A</th>\n",
              "      <td>-0.709325</td>\n",
              "      <td>-0.398991</td>\n",
              "      <td>2.255707</td>\n",
              "      <td>1.286425</td>\n",
              "      <td>0.503142</td>\n",
              "      <td>1.856716</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>B</th>\n",
              "      <td>0.239717</td>\n",
              "      <td>-0.993057</td>\n",
              "      <td>-1.434999</td>\n",
              "      <td>-0.777527</td>\n",
              "      <td>0.057464</td>\n",
              "      <td>-2.428056</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "          W         X         Y         Z  W_squared       new\n",
              "A -0.709325 -0.398991  2.255707  1.286425   0.503142  1.856716\n",
              "B  0.239717 -0.993057 -1.434999 -0.777527   0.057464 -2.428056"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 81
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "yZ__EWX09wh0"
      },
      "source": [
        "#Must Notice that Loc considers both ends \n",
        "#while iloc doesn't include the right extreme."
      ],
      "execution_count": 82,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9X5dNWZ0-Hu3"
      },
      "source": [
        "## Importing Data using Pandas/"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "uzOSFwqhYjCS"
      },
      "source": [
        "A"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 130
        },
        "id": "BqoPYsmc950C",
        "outputId": "ae50b48e-b4e0-4378-d94a-8ef85ab3666b"
      },
      "source": [
        "data = pd.read_csv('/content/sample_data/california_housing_train.csv')\n",
        "\n",
        "data.tail(2)"
      ],
      "execution_count": 132,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>longitude</th>\n",
              "      <th>latitude</th>\n",
              "      <th>housing_median_age</th>\n",
              "      <th>total_rooms</th>\n",
              "      <th>total_bedrooms</th>\n",
              "      <th>population</th>\n",
              "      <th>households</th>\n",
              "      <th>median_income</th>\n",
              "      <th>median_house_value</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>16998</th>\n",
              "      <td>-124.30</td>\n",
              "      <td>41.80</td>\n",
              "      <td>19.0</td>\n",
              "      <td>2672.0</td>\n",
              "      <td>552.0</td>\n",
              "      <td>1298.0</td>\n",
              "      <td>478.0</td>\n",
              "      <td>1.9797</td>\n",
              "      <td>85800.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>16999</th>\n",
              "      <td>-124.35</td>\n",
              "      <td>40.54</td>\n",
              "      <td>52.0</td>\n",
              "      <td>1820.0</td>\n",
              "      <td>300.0</td>\n",
              "      <td>806.0</td>\n",
              "      <td>270.0</td>\n",
              "      <td>3.0147</td>\n",
              "      <td>94600.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "       longitude  latitude  ...  median_income  median_house_value\n",
              "16998    -124.30     41.80  ...         1.9797             85800.0\n",
              "16999    -124.35     40.54  ...         3.0147             94600.0\n",
              "\n",
              "[2 rows x 9 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 132
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 316
        },
        "id": "mNVcA8J6-Z7Z",
        "outputId": "03536a14-9dce-4baa-f28d-23583ef12984"
      },
      "source": [
        "data.describe()"
      ],
      "execution_count": 133,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>longitude</th>\n",
              "      <th>latitude</th>\n",
              "      <th>housing_median_age</th>\n",
              "      <th>total_rooms</th>\n",
              "      <th>total_bedrooms</th>\n",
              "      <th>population</th>\n",
              "      <th>households</th>\n",
              "      <th>median_income</th>\n",
              "      <th>median_house_value</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>count</th>\n",
              "      <td>17000.000000</td>\n",
              "      <td>17000.000000</td>\n",
              "      <td>17000.000000</td>\n",
              "      <td>17000.000000</td>\n",
              "      <td>17000.000000</td>\n",
              "      <td>17000.000000</td>\n",
              "      <td>17000.000000</td>\n",
              "      <td>17000.000000</td>\n",
              "      <td>17000.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mean</th>\n",
              "      <td>-119.562108</td>\n",
              "      <td>35.625225</td>\n",
              "      <td>28.589353</td>\n",
              "      <td>2643.664412</td>\n",
              "      <td>539.410824</td>\n",
              "      <td>1429.573941</td>\n",
              "      <td>501.221941</td>\n",
              "      <td>3.883578</td>\n",
              "      <td>207300.912353</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>std</th>\n",
              "      <td>2.005166</td>\n",
              "      <td>2.137340</td>\n",
              "      <td>12.586937</td>\n",
              "      <td>2179.947071</td>\n",
              "      <td>421.499452</td>\n",
              "      <td>1147.852959</td>\n",
              "      <td>384.520841</td>\n",
              "      <td>1.908157</td>\n",
              "      <td>115983.764387</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>min</th>\n",
              "      <td>-124.350000</td>\n",
              "      <td>32.540000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>3.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>0.499900</td>\n",
              "      <td>14999.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25%</th>\n",
              "      <td>-121.790000</td>\n",
              "      <td>33.930000</td>\n",
              "      <td>18.000000</td>\n",
              "      <td>1462.000000</td>\n",
              "      <td>297.000000</td>\n",
              "      <td>790.000000</td>\n",
              "      <td>282.000000</td>\n",
              "      <td>2.566375</td>\n",
              "      <td>119400.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>50%</th>\n",
              "      <td>-118.490000</td>\n",
              "      <td>34.250000</td>\n",
              "      <td>29.000000</td>\n",
              "      <td>2127.000000</td>\n",
              "      <td>434.000000</td>\n",
              "      <td>1167.000000</td>\n",
              "      <td>409.000000</td>\n",
              "      <td>3.544600</td>\n",
              "      <td>180400.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>75%</th>\n",
              "      <td>-118.000000</td>\n",
              "      <td>37.720000</td>\n",
              "      <td>37.000000</td>\n",
              "      <td>3151.250000</td>\n",
              "      <td>648.250000</td>\n",
              "      <td>1721.000000</td>\n",
              "      <td>605.250000</td>\n",
              "      <td>4.767000</td>\n",
              "      <td>265000.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>max</th>\n",
              "      <td>-114.310000</td>\n",
              "      <td>41.950000</td>\n",
              "      <td>52.000000</td>\n",
              "      <td>37937.000000</td>\n",
              "      <td>6445.000000</td>\n",
              "      <td>35682.000000</td>\n",
              "      <td>6082.000000</td>\n",
              "      <td>15.000100</td>\n",
              "      <td>500001.000000</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "          longitude      latitude  ...  median_income  median_house_value\n",
              "count  17000.000000  17000.000000  ...   17000.000000        17000.000000\n",
              "mean    -119.562108     35.625225  ...       3.883578       207300.912353\n",
              "std        2.005166      2.137340  ...       1.908157       115983.764387\n",
              "min     -124.350000     32.540000  ...       0.499900        14999.000000\n",
              "25%     -121.790000     33.930000  ...       2.566375       119400.000000\n",
              "50%     -118.490000     34.250000  ...       3.544600       180400.000000\n",
              "75%     -118.000000     37.720000  ...       4.767000       265000.000000\n",
              "max     -114.310000     41.950000  ...      15.000100       500001.000000\n",
              "\n",
              "[8 rows x 9 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 133
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "HhJcnDKIX-qN"
      },
      "source": [
        "hma50 = np.percentile(data['housing_median_age'], 50)"
      ],
      "execution_count": 135,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "r1r90DyRZ4oR",
        "outputId": "4f8bf24e-6c97-469a-a3a8-4e0c093df994",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "data[data['housing_median_age']>hma50]['housing_median_age']"
      ],
      "execution_count": 138,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "7        41.0\n",
              "8        34.0\n",
              "9        46.0\n",
              "12       48.0\n",
              "13       31.0\n",
              "         ... \n",
              "16993    52.0\n",
              "16994    32.0\n",
              "16995    52.0\n",
              "16996    36.0\n",
              "16999    52.0\n",
              "Name: housing_median_age, Length: 8189, dtype: float64"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 138
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "P3YlDPo_aBXx"
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    }
  ]
}